2013IT鐵人賽-16-git04-git基礎練習git pull 與第2裝置使用
2013IT鐵人賽-16-git04-git基礎練習git pull 與第2裝置使用
在上一篇文章 2013IT鐵人賽-12-git03-git基礎練習git show 與 git diff 內我們討論了 git show 以及 git diff 的使用方法.
今天我們就來繼續討論 git 的其他基礎練習, 當初要使用 git 來練習, 主要就是 git 採取<span style="color: blue;">分散式的開發</span>以及在不同的平台上面都可以使用 git 來操作. 所以我們就來試試看使用第2個裝置來存取GitHub 上面的資料.
既然東西已經放在 GitHub 上面, 所以如果在家中的另外一台電腦或是筆電也要這個開發環境該如何呢?
首先我們在其他的電腦上面, 請參考之前的文章 2013IT鐵人賽-03-程式學習紀錄-git01-使用git與GitHub紀錄 來安裝git 環境.
( #zypper install git 以及 # zypper install git-daemon )
接下來將GitHub 上面的資料同步到第2個裝置
這邊我以我自己電腦的環境, 使用者是 max 為例子
(openSUSE 的使用者提示符號為 <span style="color: red;">></span> 其他的linux 系統為<span style="color: blue;">$</span>)
目前工作目錄在家目錄
pwd
/home/max
先建立工作目錄 /home/max/2013ironman
mkdir /home/max/2013ironman
進入到工作目錄
cd /home/max/2013ironman/
執行 git 初始化
git init
Initialized empty Git repository in /home/max/2013ironman/.git/
因為以後還是要使用原來的名字來傳遞資料, 所以還是要設定名字以及電子郵件
git config <span style="color: red;">--global</span> user.name "你的名字"
git config <span style="color: red;">--global</span> user.email "你的電子郵件"
設定遠端( GitHub ) 的repo設定
git remote add origin https://github.com/sakanamax/2013ironman.git <span style="color: red;">(這邊請用自己的 git 路徑)</span>
可以透過 git remote -v show 來觀察相關資訊( -v 代表顯示詳細資訊)
git remote -v show
origin https://github.com/sakanamax/2013ironman.git (fetch)
origin https://github.com/sakanamax/2013ironman.git (push)
接下來的部份就跟之前在建立repo 不一樣了, 我們要把遠端的容器複製過來
還沒進行之前, 先觀察一下目錄下的物件
ls -a
. .. .git
git <span style="color: red;">pull</span> origin master
remote: Counting objects: 53, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 53 (delta 9), reused 50 (delta 6)
Unpacking objects: 100% (53/53), done.
From https://github.com/sakanamax/2013ironman
* branch master -> FETCH_HEAD
這邊我們使用 pull 的方式將遠端的資料拉( pull )回來
再次觀察目錄下的物件
ls -a
. .. .git java README.md ruby
這邊可以看到一個有趣的情形
在我的<span style="color: blue;">第2個裝置</span>(家中PC, 使用者為max)
ls java/
Basic_001_Helloworld.class Basic_003_variablesAnnounce.class
Basic_001_Helloworld.java Basic_003_variablesAnnounce.java
Basic_002_javaStructure.class helloworld.class
Basic_002_javaStructure.java helloworld.java
這邊有看到當初練習 java 實作所留下的 helloworld.java 以及 helloworld.class (請見2013IT鐵人賽-11-Java03-Java檔案的基本結構)
git status
# On branch master
nothing to commit, working directory clean
原因為當初我們沒有使用 git rm 或是 git mv 的方式來處理, 只是使用檔案操作的方式來進行, 所以檔案還在 GitHub 上面.
觀察 EasyCloud 上面VM的狀況(原本<span style="color: red;">第1個裝置</span>)
Basic_001_Helloworld.class Basic_002_javaStructure.java
Basic_001_Helloworld.java Basic_003_variablesAnnounce.class
Basic_002_javaStructure.class Basic_003_variablesAnnounce.java
使用 git status 觀察
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: java/helloworld.class
# deleted: java/helloworld.java
#
接下來我們使用 git rm 來刪除這兩個檔案
rm 'java/helloworld.java'
rm 'java/helloworld.class'
再次觀察 git status 的輸出
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: java/helloworld.class
# deleted: java/helloworld.java
#
git add 以及 git rm 都一樣是要經過 git commit 才會生效的, 所以接下來我們來進行提交作業
[master 16cb9f4] Delete java helloworld.java and .class
2 files changed, 6 deletions(-)
delete mode 100644 java/helloworld.class
delete mode 100644 java/helloworld.java
發送到遠端的 GitHub
Username for 'https://github.com': 您的帳號
Password for 'https://sakanamax@github.com': 您的密碼
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 349 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/sakanamax/2013ironman.git
16f1565..16cb9f4 master -> master
這個時候可以到 GitHub 上面觀察檔案是否有被刪除
https://github.com/sakanamax/2013ironman/tree/master/java
接下來回到我們的第2個裝置
ls java/
Basic_001_Helloworld.class Basic_003_variablesAnnounce.class
Basic_001_Helloworld.java Basic_003_variablesAnnounce.java
Basic_002_javaStructure.class helloworld.class
Basic_002_javaStructure.java helloworld.java
這邊只要再次執行 git pull 來同步就可以了
git <span style="color: red;">pull</span> origin master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1)
Unpacking objects: 100% (3/3), done.
From https://github.com/sakanamax/2013ironman
* branch master -> FETCH_HEAD
Updating 16f1565..16cb9f4
Fast-forward
java/helloworld.class | Bin 428 -> 0 bytes
java/helloworld.java | 6 ------
2 files changed, 6 deletions(-)
delete mode 100644 java/helloworld.class
delete mode 100644 java/helloworld.java
今天練習了第2個裝置的git, git clone, 以及 git pull 來從遠端容器同步 :-)
Fun with Day 16 ~